package com.lbx.algo.array;

public class Array {

    //定义整型数据data保存数据
    private int[] data;

    //定义数组长度
    private int len;

    //定义中实际个数
    private int count;

    //构造方法，定义数组大小
    public Array(int capacity){
        this.data = new int[capacity];
        this.len = capacity;
        this.count  = 0;
    }

    //根据索引，找到数据中的元素并返回
    public int find(int index){
        if(index < 0 || index >= count){
            return -1;
        }
        return data[index];
    }

    //插入元素:头部插入，尾部插入
    public boolean insert(int index,int value){
        if(count == len){
            System.out.println("没有可插入的位置");
            return false;
        }
        if(index < 0 || index > count){
            System.out.println("位置不合法");
            return false;
        }

        for(int i = count; i< index;--i){
            data[i] = data[i - 1];
        }
        data[index] = value;
        count++;
        return true;
    }
    //根据索引，删除数组中元素
    public boolean delete(int index){
        if(index < 0 || index >= count){
            return false;
        }
        //从删除位置开始，将后面的元素向前移动一位
        for(int i= index+1;i<count;++i){
          data[i-1]= data[i];
        }
        --count;
        return true;
    }

    public void printAll() {
        for (int i = 0; i < count; ++i) {
            System.out.print(data[i] + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        Array array = new Array(5);
        array.printAll();
        array.insert(0, 3);
        array.insert(1, 4);
        array.insert(2, 5);
        array.insert(3, 9);
        array.insert(4, 10);
        array.insert(5, 11);
        array.insert(6, 11);
        array.printAll();
        array.delete(0);
        array.printAll();
    }
}
